3 Visualizando datos en formato vector y raster en R
En R existe una variedad de paquetes que te puedn ayudar a vizualizar y tabajar con datos espaciales, en el presente capítulo analizaremos los paquetes sf para manejo de datos espaciales y raster para manejos raster, y su vizualización básica con la función plot.
3.1 Instalación de paquetes
Los paquetes sf y raster se encuentra en el repositorio oficial de R: el paquete sf que se utiliza para manejar simples features, una forma estandarizada para utilizar datos/objetos del tipo vector, utiliza los estandares GDAL para lectura y escritura de datos, GEOS geométricas y PROJ para proyecciones y transformación de datos; el paquete raster permite la lectura, esccritura admás de poder realizar análisi y modelados en datos cuadriculaos (imágenes raster).
Para instalación de paquete oficiales o que se encuentren dentro del repositorio oficial se utiliza la función install.packages().
3.2 Cargar archivos vectoriales y su visualización
Los archivos vectoriales uno de los mas utilizados son los archivos en formato .shp, que son archivos de ESRI, los modelos vectoriales almacenan 3 tipos de fromas geemétricas que son: punto, linea y poligono. En R existen diversas formas de abrir este tipo archivos, se puede utilizar otros paquetes como ser rgdal o sp.
En el paquete sf la funcion st_read() permite la lectura de este tipos de archivos solo hay que colocar la ruta de nuestro archivo.
#listar los archivos con extension .shp
shape_files <- list.files('../recursos/shps', full.names = T, pattern = '.shp$')
shape_files## [1] "../recursos/shps/aeropuertos_bolivia.shp"
## [2] "../recursos/shps/Departamentos_Bolivia.shp"
## [3] "../recursos/shps/DUCTOS.shp"
## [4] "../recursos/shps/POBLACIONES.shp"
#Cargar el primer elemento que son los departamentos de Bolivia (Poligono)
sf_dep <- st_read(shape_files[2], stringsAsFactors = F)## Reading layer `Departamentos_Bolivia' from data source `D:\VC2019\TRABAJO\UMSA\geografia\curso\curso_r_espacial\recursos\shps\Departamentos_Bolivia.shp' using driver `ESRI Shapefile'
## Simple feature collection with 14 features and 6 fields
## geometry type: MULTIPOLYGON
## dimension: XY
## bbox: xmin: -69.64483 ymin: -22.90657 xmax: -57.45443 ymax: -9.669633
## epsg (SRID): 4326
## proj4string: +proj=longlat +datum=WGS84 +no_defs
#Cargar el segundo elemento que son los ductos de petroleo (lineas)
sf_duc <- st_read(shape_files[3], stringsAsFactors = F)## Reading layer `DUCTOS' from data source `D:\VC2019\TRABAJO\UMSA\geografia\curso\curso_r_espacial\recursos\shps\DUCTOS.shp' using driver `ESRI Shapefile'
## Simple feature collection with 102 features and 25 fields
## geometry type: LINESTRING
## dimension: XYZ
## bbox: xmin: -70.32087 ymin: -22.03772 xmax: -57.74886 ymax: -16.30326
## epsg (SRID): NA
## proj4string: +proj=longlat +ellps=intl +no_defs
#Cargar el ercer elemento que son las poblaciones (puntos)
sf_pob <- st_read(shape_files[4], stringsAsFactors = F)## Reading layer `POBLACIONES' from data source `D:\VC2019\TRABAJO\UMSA\geografia\curso\curso_r_espacial\recursos\shps\POBLACIONES.shp' using driver `ESRI Shapefile'
## Simple feature collection with 23891 features and 14 fields
## geometry type: POINT
## dimension: XY
## bbox: xmin: -69.60421 ymin: -22.85162 xmax: -57.56432 ymax: -9.678153
## epsg (SRID): 4326
## proj4string: +proj=longlat +datum=WGS84 +no_defs
Se carga un objeto que contiene información geográfica como ser: el tipo de vector, la extension geográfica y en que proyeccion esta. Además se carga todos los datos adjuntos y se crea una columna llamadad geometry donde esta cargado la geometria que es donde esta ubicada espacialmente.
3.2.1 Cargar un archivo de texto con coordenadas
Cuando tenemos un archivo que contiene las coordenadas recogidas en algun trabajo en R se utiliza la funcion st_as_sf(), aca se debe definir un objeto que contenga las coordenadas (debe contener la longitud y latitud), para cargar nuestros datos como un data frame se utiliza la función read_csv() del paquete base de R.
#Leer los datos de nuestro archivo csv
bol_aeropuertos <- read.csv("../recursos/archivos/aeropuertos_bolivia.csv",
stringsAsFactors = FALSE)
#Ver la información que contiene
head(bol_aeropuertos)## id nombre ciudad pais iata_faa iaco latitude longitude
## 1 1 Bermejo Bermejo Bolivia BJO SLBJ -22.77334 -64.31288
## 2 2 Jorge Wilsterman Cochabamba Bolivia CBB SLCB -17.42106 -66.17711
## 3 3 Chimore Chapacura Bolivia SLCH -16.99002 -65.14153
## 4 4 Heroes Del Acre Cobija Bolivia CIJ SLCO -11.04044 -68.78297
## 5 5 El Alto Intl La Paz Bolivia LPB SLLP -16.51334 -68.19226
## 6 6 Juan Mendoza Oruro Bolivia SLOR -17.96259 -67.07624
## altitude zone dst
## 1 1250 -3 U
## 2 8360 -4 U
## 3 1000 -4 U
## 4 892 -4 U
## 5 13325 -4 U
## 6 12146 -4 U
#Lo volvemos en un feature con la funcion st_as_sf con las columnas que definen la longitud y latitud
sf_aer <- st_as_sf(bol_aeropuertos, coords = c("longitude", "latitude"), crs=4326)###Visualizacion
Para visualizar utilizaremos la función plot que es la que esta por defecto en el R.

Con R facilmente podemos crear un mapa con la clasificación de un atributo de nuestro feature, para esto utilizamos los corchetes con el nombre del atributo.
## gml_id OBJECTID ID COD_DEP
## Length:14 Min. : 1.00 Min. : 0.0 Length:14
## Class :character 1st Qu.: 42.75 1st Qu.:174.2 Class :character
## Mode :character Median :143.00 Median :238.5 Mode :character
## Mean :163.36 Mean :276.9
## 3rd Qu.:209.00 3rd Qu.:406.0
## Max. :443.00 Max. :479.0
## NOM_DEP DESCRIP geometry
## Length:14 Length:14 MULTIPOLYGON :14
## Class :character Class :character epsg:4326 : 0
## Mode :character Mode :character +proj=long...: 0
##
##
##

Exite varios parametros que nos pueden ser de utilidad para presentar mapas en R a continuacion detallamos algunos:
-col: permite definir la paleta de colores puede definirse por un número o colocar una paleta predefinida por el paquete principal como ser: rainbow, heat.colors, topo.colors, bpy.colors. -axes binario, por TRUE muestra los ejes. -add binario, por TRUE permite añadir un feature al mapa.
Existen más parametros que pueden ser visualizados en al ayuda de R para esto se puede usar ?plot y seleccionar la función plot del paquete sf.
Para añadir mas features en un solo mapa utilizaremos la funcion st_geometry dentro de plot para que nos muestre solo los objetos espaciales y no los discrimine por sus atributos.
plot(st_geometry(sf_dep), col = sf.colors(9, categorical = TRUE), border = 'grey',
axes = TRUE)
plot(st_geometry(sf_duc), add = T)
plot(st_geometry(sf_aer), pch = 3, col = "red", add = T)
3.3 Cargando imagenes Raster
Las imagenes raster vienen en varias tipo de formatos como ser .tif, .grd, .NFS y mchos otros. Para cargar un archivo utilizamos la funcion raster(), enviandole laruta donde se encuentra nuestra imagen raster, existen otros parametros como ser band que banda utilizaremos, layer que capa se cargara.
# Listar todos nuestros archivos raster con extension tif
raster_files <- list.files('../recursos/raster', full.names = T,
recursive = T, pattern = '.tif$')
#Cargar la imagen a nuestro espacio de trabajo
ras_1 <- raster(raster_files[1])
#Ver el objeto cargado
ras_1## class : RasterLayer
## band : 1 (of 3 bands)
## dimensions : 531, 684, 363204 (nrow, ncol, ncell)
## resolution : 0.01098633, 0.01053534 (x, y)
## extent : -64.58862, -57.07397, -20.32536, -14.7311 (xmin, xmax, ymin, ymax)
## crs : +proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0
## source : D:/VC2019/TRABAJO/UMSA/geografia/curso/curso_r_espacial/recursos/raster/Santa_Cruz_2.tif
## names : Santa_Cruz_2
## values : 0, 255 (min, max)
Las imagenes raster son matrices que contienen celdas con valores númericos, podemos acceder a cualquier valor de nuestra imagen con los corchetes [filas, columna] indicando la posición en la matriz.
##
## 53
##
## 47
###Visualización de imagenes raster
Para visualizar nuestro objetos raster utilizamos la función plot.

Como se obserav nos muestra los resultados de la imagen en una escala de verde a rojo, muchas imagenes de satelite constan de 3 bandas por ejemplo la imagen que utilizamos se ve asi:
Image
La función que utilizamos carga la primera banda, si queremos cargar todas nuestras bandas podemos utilizar cargarla una por una y luego unirla en pila de rasters utilizando la funcion stack()
#cargar las demás bandas
ras_2 <-raster(raster_files[1], band = 2)
ras_3 <-raster(raster_files[1], band = 3)
#Crear el stack
ras_S <- stack(ras_1,ras_2,ras_3)
#Visuzaliando la imagen multibanda en formato RGB
plotRGB(ras_S)
3.4 Introducción a visualizacion dinámica con leaflet
Leaflet es una de las librerias mas popularespara realizar mpaas interactivos, R ofrece un paquete que permite visualizar nuestro mapas de manera dinamica con leaflet aca solo se muestra un ejemple si quiere saber mas puede ver https://rstudio.github.io/leaflet/.
#Instalacion
if(!require(leaflet))
install.packages('leaflet')
library(leaflet)
map <- leaflet(sf_dep) %>%
addPolygons(color = "#444444", weight = 1, smoothFactor = 0.5,
opacity = 0.5, fillOpacity = 0.5,
highlightOptions = highlightOptions(color = "white", weight = 2,
bringToFront = TRUE))
map %>% addTiles()